<!DOCTYPE html>
<html lang="zh_cn">
<head>
        <title>来玩魔王的咚</title>
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta charset="utf-8" />
        <!-- twitter card metadata -->
        <!-- OG Tags -->
        <!-- favicon -->
        <link rel="icon" type="image/png" href="/images/mowang.png">
        <!-- moment.js for date formatting -->
        <script src="/theme/js/moment.js"></script>
        <!-- css -->
        <link rel="stylesheet" type="text/css" href="/theme/css/main.css" />
        <!-- 左边的menu，如果页面高度不够，就跟着滚动，否则文章分类显示不全 -->
        <link rel="stylesheet" type="text/css" href="/theme/css/mycss/menu.css" />
		<script>
			
                /*! grunt-grunticon Stylesheet Loader - v2.1.2 | https://github.com/filamentgroup/grunticon | (c) 2015 Scott Jehl, Filament Group, Inc. | MIT license. */
    
    (function(e){function t(t,n,r,o){"use strict";function a(){for(var e,n=0;u.length>n;n++)u[n].href&&u[n].href.indexOf(t)>-1&&(e=!0);e?i.media=r||"all":setTimeout(a)}var i=e.document.createElement("link"),l=n||e.document.getElementsByTagName("script")[0],u=e.document.styleSheets;return i.rel="stylesheet",i.href=t,i.media="only x",i.onload=o||null,l.parentNode.insertBefore(i,l),a(),i}var n=function(r,o){"use strict";if(r&&3===r.length){var a=e.navigator,i=e.Image,l=!(!document.createElementNS||!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect||!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")||e.opera&&-1===a.userAgent.indexOf("Chrome")||-1!==a.userAgent.indexOf("Series40")),u=new i;u.onerror=function(){n.method="png",n.href=r[2],t(r[2])},u.onload=function(){var e=1===u.width&&1===u.height,a=r[e&&l?0:e?1:2];n.method=e&&l?"svg":e?"datapng":"png",n.href=a,t(a,null,null,o)},u.src="",document.documentElement.className+=" grunticon"}};n.loadCSS=t,e.grunticon=n})(this);(function(e,t){"use strict";var n=t.document,r="grunticon:",o=function(e){if(n.attachEvent?"complete"===n.readyState:"loading"!==n.readyState)e();else{var t=!1;n.addEventListener("readystatechange",function(){t||(t=!0,e())},!1)}},a=function(e){return t.document.querySelector('link[href$="'+e+'"]')},c=function(e){var t,n,o,a,c,i,u={};if(t=e.sheet,!t)return u;n=t.cssRules?t.cssRules:t.rules;for(var l=0;n.length>l;l++)o=n[l].cssText,a=r+n[l].selectorText,c=o.split(");")[0].match(/US\-ASCII\,([^"']+)/),c&&c[1]&&(i=decodeURIComponent(c[1]),u[a]=i);return u},i=function(e){var t,o,a;o="data-grunticon-embed";for(var c in e)if(a=c.slice(r.length),t=n.querySelectorAll(a+"["+o+"]"),t.length)for(var i=0;t.length>i;i++)t[i].innerHTML=e[c],t[i].style.backgroundImage="none",t[i].removeAttribute(o);return t},u=function(t){"svg"===e.method&&o(function(){i(c(a(e.href))),"function"==typeof t&&t()})};e.embedIcons=i,e.getCSS=a,e.getIcons=c,e.ready=o,e.svgLoadedCallback=u,e.embedSVG=u})(grunticon,this);
                
                grunticon(["/theme/css/icons.data.svg.css", "/theme/css/icons.data.png.css", "/theme/css/icons.fallback.css"]);
            </script>
        <noscript><link href="/theme/css/icons.fallback.css" rel="stylesheet"></noscript>
        <!-- menu toggle javascript -->
        <script type="text/javascript">
            document.addEventListener("DOMContentLoaded", initMenu);
            
            function initMenu(){
                var menu = document.getElementById("menu");
                var menulink = document.getElementById("menu-link");
                menulink.addEventListener("click", function toggleMenu(){
                        window.event.preventDefault();
                        menulink.classList.toggle('active');
                        menu.classList.toggle('active');              
                    });
            };
        </script>
        <!-- 不蒜子 -->
        <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
</head>
<body>
    <div role="banner" id="masthead">
        <header>
            <a href="/"><img src="/images/mowang.png" alt="McManus Logo"></a>
                <h1>来玩魔王的咚@骑士救兵</h1>
            <a href="#menu" id="menu-link">more stuff</a>
            <nav id="menu">
                <ul>
                        <li><a href="/tags">tags</a></li>
                            <li><a href="/category/cloud.html">Cloud</a></li>
                            <li><a href="/category/docker.html">Docker</a></li>
                            <li><a href="/category/go.html">Go</a></li>
                            <li><a href="/category/linux.html">Linux</a></li>
                            <li><a href="/category/python.html">Python</a></li>
                            <li><a href="/category/xue-xi-bi-ji.html">学习笔记</a></li>
                            <li><a href="/category/yun-wei-zi-dong-hua.html">运维自动化</a></li>
                </ul>
            </nav>
        </header>
    </div>
        <div class="page" role="main">
<div class="page-title">
        <h1>archives</h1>
    </div>
<div class="articles">
    <ol>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-04-03 15:40:00+08:00">
                            <script>document.write(moment('2022-04-03 15:40:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-pytest-supplement.html">
                        <h2>pytest（八）补充内容</h2>
                    </a>
                </header>
                <div class="summary"><p>pytest系列的补充内容。使用临时目录；自定义失败断言的消息；关闭磁盘缓存pyc；raise重写和禁用；解决子目录中模块重名的问题。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/python-pytest-supplement.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-29 21:04:00+08:00">
                            <script>document.write(moment('2022-03-29 21:04:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-mark-skip-and-xfail.html">
                        <h2>pytest（七）skip和xfail标记</h2>
                    </a>
                </header>
                <div class="summary"><p>使用mark标记的skip和xfail这两个内置标记，处理预计会失败或是无法成功的测试。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-mark-skip-and-xfail.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-25 09:02:00+08:00">
                            <script>document.write(moment('2022-03-25 09:02:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-capture-logging-and-output.html">
                        <h2>pytest（六）捕获日志及输出</h2>
                    </a>
                </header>
                <div class="summary"><p>管理logging日志；捕获标准输出和标准错误。对日志和输出断言测试。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-capture-logging-and-output.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-24 12:10:00+08:00">
                            <script>document.write(moment('2022-03-24 12:10:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-xunit-style-setup.html">
                        <h2>pytest（五）经典xUnit风格的setup/teardown</h2>
                    </a>
                </header>
                <div class="summary"><p>在Pytest中，也有类似于unittest那样的的xUnit style的setup/teardown。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-xunit-style-setup.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-22 14:10:00+08:00">
                            <script>document.write(moment('2022-03-22 14:10:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-monkeypatch.html">
                        <h2>pytest（四）模拟</h2>
                    </a>
                </header>
                <div class="summary"><p>使用pytest的monkeypatch/mock模拟。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-monkeypatch.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-21 14:41:00+08:00">
                            <script>document.write(moment('2022-03-21 14:41:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-parametrize.html">
                        <h2>pytest（三）参数化测试</h2>
                    </a>
                </header>
                <div class="summary"><p>使用pytest进行参数化测试。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-parametrize.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-17 10:28:00+08:00">
                            <script>document.write(moment('2022-03-17 10:28:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-fixture.html">
                        <h2>pytest（二）fixture固件</h2>
                    </a>
                </header>
                <div class="summary"><p>pytest中fixture固件的用法。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-fixture.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-03-16 18:55:00+08:00">
                            <script>document.write(moment('2022-03-16 18:55:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/pytest-getting-started.html">
                        <h2>pytest（一）入门</h2>
                    </a>
                </header>
                <div class="summary"><p>使用pytest进行测试的基本用法。使用断言测试；测试异常抛出；测试发现的规则；运行测试的方式；mark标记和基于标记的测试运行。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/pytest-getting-started.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2022-02-18 15:52:00+08:00">
                            <script>document.write(moment('2022-02-18 15:52:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/overload-cpu-memory-for-test.html">
                        <h2>模拟系统负载</h2>
                    </a>
                </header>
                <div class="summary"><p>手动提升CPU、内存、磁盘读写，触发告警</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/jian-kong.html" class="tag">监控</a></li>
                    </ul>
                </div>
                <a href="/overload-cpu-memory-for-test.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2021-10-26 18:25:00+08:00">
                            <script>document.write(moment('2021-10-26 18:25:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-moudle-pandas.html">
                        <h2>Python pandas 库</h2>
                    </a>
                </header>
                <div class="summary"><p>简介：安装，导入模块，数据结构，准备数据；DataFrame：生成表格，显示，筛选，排序，索引；高级用法：访问数据，转为数组，统计；进阶操作：map，applymap，apply，聚合，删除；绘图：线性图，np.cumsum累加值，柱状图，直方图，密度图，标准正态分布</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/pythonmo-kuai.html" class="tag">python模块</a></li>
                    </ul>
                </div>
                <a href="/python-moudle-pandas.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2021-05-06 10:00:00+08:00">
                            <script>document.write(moment('2021-05-06 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/cloud.html"><span class="category-tag">Cloud</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/terraform-create-virtual-machine-on-azure.html">
                        <h2>Terraform 创建 Azure 虚拟机</h2>
                    </a>
                </header>
                <div class="summary"><p>使用Terraform在Azure上创建虚拟机；销毁资源和状态文件；变量的声明、设置、引用、输出</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/terraform.html" class="tag">terraform</a></li>
                        <li><a href="/tag/azure.html" class="tag">azure</a></li>
                    </ul>
                </div>
                <a href="/terraform-create-virtual-machine-on-azure.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2021-05-01 16:00:00+08:00">
                            <script>document.write(moment('2021-05-01 16:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/cloud.html"><span class="category-tag">Cloud</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/terraform-how-to.html">
                        <h2>Terraform 基本用法</h2>
                    </a>
                </header>
                <div class="summary"><p>Terraform的基本使用：创建、修改和销毁基础资源；Terraform设置：配置文件，镜像仓库，插件缓存；项目中指定使用本地仓库</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/terraform.html" class="tag">terraform</a></li>
                    </ul>
                </div>
                <a href="/terraform-how-to.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2021-04-30 23:00:00+08:00">
                            <script>document.write(moment('2021-04-30 23:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/cloud.html"><span class="category-tag">Cloud</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/terraform-run-in-docker.html">
                        <h2>使用 Terraform 容器</h2>
                    </a>
                </header>
                <div class="summary"><p>不安装Terraform，而是直接运行Terraform容器：调试容器启动参数的过程；创建Docker容器示例；设置terraform别名，如同直接执行本地的命令</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/terraform.html" class="tag">terraform</a></li>
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/terraform-run-in-docker.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2021-04-29 10:00:00+08:00">
                            <script>document.write(moment('2021-04-29 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/cloud.html"><span class="category-tag">Cloud</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/develop-in-remote-containers-using-vs-code.html">
                        <h2>使用 VS Code 在容器环境中开发</h2>
                    </a>
                </header>
                <div class="summary"><p>使用 VS Code 在容器环境中开发；构建 Azure Terraform 开发容器</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/vscode.html" class="tag">vscode</a></li>
                        <li><a href="/tag/wsl.html" class="tag">WSL</a></li>
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/develop-in-remote-containers-using-vs-code.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2021-04-24 14:45:00+08:00">
                            <script>document.write(moment('2021-04-24 14:45:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-unittest.html">
                        <h2>Python 单元测试（unittest）</h2>
                    </a>
                </header>
                <div class="summary"><p>单元测试，Python标准库unittest模块的使用。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/python-unittest.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-12-27 10:30:00+08:00">
                            <script>document.write(moment('2020-12-27 10:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/xue-xi-bi-ji.html"><span class="category-tag">学习笔记</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/c-programming-base-type.html">
                        <h2>C语言基本类型</h2>
                    </a>
                </header>
                <div class="summary"><p>整数类型：八进制、十六进制；浮点类型；字符类型：转义字符，读写字符惯用法；类型转换：强制类型转换；类型定义：使用布尔值</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/cyu-yan.html" class="tag">C语言</a></li>
                    </ul>
                </div>
                <a href="/c-programming-base-type.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-12-17 10:00:00+08:00">
                            <script>document.write(moment('2020-12-17 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-reflection.html">
                        <h2>运行时反射</h2>
                    </a>
                </header>
                <div class="summary"><p>反射：反射定律；Value：获取原始类型，修改反射的值，获取底层类型（Kind），Elem方法；Type：反射判断是否实现了接口；使用反射：反射遍历结构体的字段和方法，获取修改字段，获取调用方法。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                        <li><a href="/tag/fan-she.html" class="tag">反射</a></li>
                    </ul>
                </div>
                <a href="/gotour-reflection.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-12-03 19:00:00+08:00">
                            <script>document.write(moment('2020-12-03 19:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-concurrency-coding-example.html">
                        <h2>并发编程范例</h2>
                    </a>
                </header>
                <div class="summary"><p>select多路复用；并发编程范例：非阻塞模式，for select循环模式，Pipeline模式，扇出和扇入模式，Futures模式</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                    </ul>
                </div>
                <a href="/gotour-concurrency-coding-example.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-12-02 15:00:00+08:00">
                            <script>document.write(moment('2020-12-02 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-pkg-context.html">
                        <h2>context包</h2>
                    </a>
                </header>
                <div class="summary"><p>Context的功能介绍：接口；Context树：4种类型ctx的生成和使用；Context的使用原则</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                    </ul>
                </div>
                <a href="/gotour-pkg-context.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-11-30 11:00:00+08:00">
                            <script>document.write(moment('2020-11-30 11:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-pkg-sync-advanced.html">
                        <h2>sync包补充</h2>
                    </a>
                </header>
                <div class="summary"><p>条件变量sync.Cond的用法，方法介绍以及代码示例；并发安全字典sync.Map：原生字典在并发中的用法，并发安全字典的用法，两者的比较；并发安全字典进阶：用类型断言检查类型正确，用反射检查类型正确。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                        <li><a href="/tag/sync.html" class="tag">sync</a></li>
                        <li><a href="/tag/fan-she.html" class="tag">反射</a></li>
                    </ul>
                </div>
                <a href="/gotour-pkg-sync-advanced.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-11-28 20:00:00+08:00">
                            <script>document.write(moment('2020-11-28 20:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-type-hints.html">
                        <h2>类型注解 typing 模块</h2>
                    </a>
                </header>
                <div class="summary"><p>VScode中使用类型检查；类型注解；typing模块：各种类型的定义和使用；参考项目</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/pythonmo-kuai.html" class="tag">python模块</a></li>
                    </ul>
                </div>
                <a href="/python-type-hints.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-11-24 13:30:00+08:00">
                            <script>document.write(moment('2020-11-24 13:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/smokeping-how-to.html">
                        <h2>SmokePing 安装配置</h2>
                    </a>
                </header>
                <div class="summary"><p>yum安装EPEL源的Smokeping；编译安装新版本的SmokePing；安装探针：fping，echoping，tcpping；配置：配置文件说明，配置监控节点，添加中文支持</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/jian-kong.html" class="tag">监控</a></li>
                        <li><a href="/tag/fping.html" class="tag">fping</a></li>
                    </ul>
                </div>
                <a href="/smokeping-how-to.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-11-21 10:00:00+08:00">
                            <script>document.write(moment('2020-11-21 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-error-handling.html">
                        <h2>Go 错误处理（Error Wrapping）</h2>
                    </a>
                </header>
                <div class="summary"><p>错误处理：类型断言；错误嵌套（Error Wrapping）:工具函数Unwrap、Is和As，自定义类型实现Unwrap；源码参考：error接口的实现，os包</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                        <li><a href="/tag/errors.html" class="tag">errors</a></li>
                    </ul>
                </div>
                <a href="/gotour-error-handling.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-11-20 10:00:00+08:00">
                            <script>document.write(moment('2020-11-20 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-basic-grammar.html">
                        <h2>Go 语法基础</h2>
                    </a>
                </header>
                <div class="summary"><p>iota定义常量；值类型和引用类型；流程控制语句；结构体：构造函数，Go中的面向对象；函数、方法和接口：值类型接收者和指针类型接收者</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                    </ul>
                </div>
                <a href="/gotour-basic-grammar.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-11-19 10:00:00+08:00">
                            <script>document.write(moment('2020-11-19 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gotour-basic-tutorial.html">
                        <h2>Go 基础入门</h2>
                    </a>
                </header>
                <div class="summary"><p>使用：官网Go指南，安装Go语言；环境变量：go的环境变量，修改环境变量；采用Go Module的方式创建项目；编译发布：代码格式化工具，编译成可执行文件，跨平台编译</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gotour.html" class="tag">gotour</a></li>
                    </ul>
                </div>
                <a href="/gotour-basic-tutorial.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-10-13 11:00:00+08:00">
                            <script>document.write(moment('2020-10-13 11:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/compile-python-from-source.html">
                        <h2>Centos7 编译安装 Python 3.9.0</h2>
                    </a>
                </header>
                <div class="summary"><p>在Centos7系统上，从源码编译安装Python 3.9.0：编译中遇到的坑，依赖项的解决，安装后一直到别的服务器</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/python.html" class="tag">python</a></li>
                        <li><a href="/tag/make.html" class="tag">make</a></li>
                    </ul>
                </div>
                <a href="/compile-python-from-source.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-30 14:40:00+08:00">
                            <script>document.write(moment('2020-09-30 14:40:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-moudle-site.html">
                        <h2>Python site 模块</h2>
                    </a>
                </header>
                <div class="summary"><p>pth文件追加sys.path路径；sitecustomize，usercustomize默认启动执行命令，改变python shell的提示符；普通用户pip安装模块；python环境变量</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/pythonmo-kuai.html" class="tag">python模块</a></li>
                    </ul>
                </div>
                <a href="/python-moudle-site.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-29 14:00:00+08:00">
                            <script>document.write(moment('2020-09-29 14:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/xue-xi-bi-ji.html"><span class="category-tag">学习笔记</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/vscode-extensions.html">
                        <h2>VS Code 扩展</h2>
                    </a>
                </header>
                <div class="summary"><p>记录 VS Code 用到的扩展和设置</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/vscode.html" class="tag">vscode</a></li>
                    </ul>
                </div>
                <a href="/vscode-extensions.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-27 16:30:00+08:00">
                            <script>document.write(moment('2020-09-27 16:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/ubuntu-how-to-basic.html">
                        <h2>Ubuntu使用心得</h2>
                    </a>
                </header>
                <div class="summary"><p>安装包管理：dpkg命令，apt命令；Python：通过get-pip.py安装pip，升级python3的问题，site模块；我的WSL Ubuntu初始化操作；Docker：安装docker-ce，prtainer图形化管理工具</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/wsl.html" class="tag">WSL</a></li>
                        <li><a href="/tag/ubuntu.html" class="tag">ubuntu</a></li>
                        <li><a href="/tag/python.html" class="tag">python</a></li>
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/ubuntu-how-to-basic.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-24 09:30:00+08:00">
                            <script>document.write(moment('2020-09-24 09:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/xue-xi-bi-ji.html"><span class="category-tag">学习笔记</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/wsl-how-to-basic.html">
                        <h2>WSL使用</h2>
                    </a>
                </header>
                <div class="summary"><p>WSL Ubuntu系统安装：系统初始化，移动应用目录，重装Ubuntu，用find查找文件排除指定目录；Windows Terminal：修改默认程序，默认进入家目录，使用SSH；Windows的文件资源管理器访问wsl文件夹</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/wsl.html" class="tag">WSL</a></li>
                        <li><a href="/tag/ubuntu.html" class="tag">ubuntu</a></li>
                    </ul>
                </div>
                <a href="/wsl-how-to-basic.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-23 10:00:00+08:00">
                            <script>document.write(moment('2020-09-23 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/shell-process-monitor.html">
                        <h2>shell 监测进程</h2>
                    </a>
                </header>
                <div class="summary"><p>ps命令查看进程：Unix风格ps -ef，BSD风格ps aux，GNU长参数；top命令实时监测进程；结束进程：Linux进程信号，klll命令，killall命令</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                    </ul>
                </div>
                <a href="/shell-process-monitor.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-22 14:15:00+08:00">
                            <script>document.write(moment('2020-09-22 14:15:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/shell-text-menu.html">
                        <h2>shell 创建文本菜单</h2>
                    </a>
                </header>
                <div class="summary"><p>创建文本菜单：echo和case定制菜单；select工具快速创建文本菜单；dialog包制作窗口</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                    </ul>
                </div>
                <a href="/shell-text-menu.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-15 12:00:00+08:00">
                            <script>document.write(moment('2020-09-15 12:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-exception-handling.html">
                        <h2>异常处理</h2>
                    </a>
                </header>
                <div class="summary"><p>异常处理(try)：万能异常捕获；主动抛出异常(raise)：自定义异常，内置异常类型；断言(assert);traceback模块:将异常信息保存到文件</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/yi-chang-chu-li.html" class="tag">异常处理</a></li>
                    </ul>
                </div>
                <a href="/python-exception-handling.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-14 15:00:00+08:00">
                            <script>document.write(moment('2020-09-14 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/shell-command-line-parameters-getopt-and-getopts.html">
                        <h2>shell 命令行参数（getopt和getopts）</h2>
                    </a>
                </header>
                <div class="summary"><p>getopt命令：在命令行中使用，支持长选项，指定错误报告的程序名，可选参数；脚本中使用getopt：set命令，eval命令，解决参数空格问题，参数解析错误并退出；getopts命令：错误报告模式，示例代码；将选项标准化</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                        <li><a href="/tag/ming-ling-xing-can-shu.html" class="tag">命令行参数</a></li>
                    </ul>
                </div>
                <a href="/shell-command-line-parameters-getopt-and-getopts.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-09-02 15:00:00+08:00">
                            <script>document.write(moment('2020-09-02 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/shell-command-line-parameters-basic.html">
                        <h2>shell 命令行参数（基本）</h2>
                    </a>
                </header>
                <div class="summary"><p>命令行参数：位置参数，脚本名，测试参数，获取所有参数；移动变量shift：使用示例，移动多个位置；处理选项：case配合shift，数组带空格的问题，分离参数和选项</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                        <li><a href="/tag/ming-ling-xing-can-shu.html" class="tag">命令行参数</a></li>
                    </ul>
                </div>
                <a href="/shell-command-line-parameters-basic.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-27 15:40:00+08:00">
                            <script>document.write(moment('2020-08-27 15:40:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/linux-command-tips.html">
                        <h2>Linux命令应用</h2>
                    </a>
                </header>
                <div class="summary"><p>命令：tr,sort,uniq,trap,screen,nohup,find,xargs,seq,script,pass；词频统计，执行任务防止意外中断，查找文件并删除，统计代码行数，打印九九乘法表，保留颜色格式到文件，命令行隐藏敏感信息</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                    </ul>
                </div>
                <a href="/linux-command-tips.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-25 13:00:00+08:00">
                            <script>document.write(moment('2020-08-25 13:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-moudle-functools.html">
                        <h2>Python functools 模块</h2>
                    </a>
                </header>
                <div class="summary"><p>reduce、map和filter，归约函数；wraps保留被装饰函数属性；partial冻结参数；lru_cache函数记忆；singledispatch单分派泛函数；一个能接收可选参数的装饰器：仅限关键字参数，run_time装饰器</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/zhuang-shi-qi.html" class="tag">装饰器</a></li>
                        <li><a href="/tag/pythonmo-kuai.html" class="tag">python模块</a></li>
                    </ul>
                </div>
                <a href="/python-moudle-functools.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-20 16:00:00+08:00">
                            <script>document.write(moment('2020-08-20 16:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-calling-c-code-with-cgo.html">
                        <h2>使用 cgo 调用 C 代码</h2>
                    </a>
                </header>
                <div class="summary"><p>用cgo调用C代码：使用cgo的场景，C代码，cgo注释，自定义bzip包；总结；安装cgo环境：Windows平台安装gcc，错误信息，下载安装，设置环境变量，运行一个简单cgo程序</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/cgo.html" class="tag">cgo</a></li>
                    </ul>
                </div>
                <a href="/gopl-calling-c-code-with-cgo.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-19 12:40:00+08:00">
                            <script>document.write(moment('2020-08-19 12:40:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/mysql-user-and-grant.html">
                        <h2>mysql用户权限</h2>
                    </a>
                </header>
                <div class="summary"><p>初始化：mariadb安全加固策略，mysql初始密码设置；查询用户的权限；用户密码设置；数据库权限修改</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/mysql.html" class="tag">mysql</a></li>
                    </ul>
                </div>
                <a href="/mysql-user-and-grant.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-18 14:00:00+08:00">
                            <script>document.write(moment('2020-08-18 14:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-low-level-programming.html">
                        <h2>底层编程（unsafe包）</h2>
                    </a>
                </header>
                <div class="summary"><p>unsafe包：Sizeof、Alignof和Offsetof，结构体内存对齐；unsafe.Pointer：查看浮点类型的位模式，修改结构体成员的值，不要把uintptr类型赋值给临时变量，reflect包返回的uintptr；深度相等示例：DeepEqual的不足，函数实现，支持循环引用，测试验证；注意事项</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-low-level-programming.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-17 11:00:00+08:00">
                            <script>document.write(moment('2020-08-17 11:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/lock-program-by-file.html">
                        <h2>限制脚本单例运行</h2>
                    </a>
                </header>
                <div class="summary"><p>锁文件：把文件系统的文件作为锁，获取到文件权限即获取到锁；flock命令：crontab中加锁，shell脚本中加锁，只能单例执行的shell脚本；自己编写python模块实现加锁。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                        <li><a href="/tag/python.html" class="tag">python</a></li>
                        <li><a href="/tag/jin-cheng-suo.html" class="tag">进程锁</a></li>
                    </ul>
                </div>
                <a href="/lock-program-by-file.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-16 15:10:00+08:00">
                            <script>document.write(moment('2020-08-16 15:10:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/shell-script-advanced.html">
                        <h2>shell脚本编写技巧</h2>
                    </a>
                </header>
                <div class="summary"><p>set设置：编写可靠的脚本；readonly：限制变量只读；flock：限制脚本单例执行；意外退出时kill所有子进程；timeout：限制运行时间；exit：退出状态码；IFS变量：字段分隔符；tee：同时打印并记录到文件；cat：脚本中创建文件；永久重定向;mktemp：创建本地临时文件</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/shell.html" class="tag">shell</a></li>
                        <li><a href="/tag/jin-cheng-suo.html" class="tag">进程锁</a></li>
                    </ul>
                </div>
                <a href="/shell-script-advanced.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-15 13:00:00+08:00">
                            <script>document.write(moment('2020-08-15 13:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/linux.html"><span class="category-tag">Linux</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/linux-basic-knowledge-points.html">
                        <h2>Linux 初级知识点</h2>
                    </a>
                </header>
                <div class="summary"><p>Linux文件系统(FHS)；结束进程(kill)；vi编辑器操作；shell输出带颜色的字体：修改命令提示符颜色</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/kill.html" class="tag">kill</a></li>
                        <li><a href="/tag/securecrt.html" class="tag">SecureCRT</a></li>
                        <li><a href="/tag/vi.html" class="tag">vi</a></li>
                    </ul>
                </div>
                <a href="/linux-basic-knowledge-points.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-14 11:20:00+08:00">
                            <script>document.write(moment('2020-08-14 11:20:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-reflection-2.html">
                        <h2>反射2</h2>
                    </a>
                </header>
                <div class="summary"><p>使用reflect.Value来设置值：判断值可寻址的方法，设置值的方法，注意事项，判断值可修改的方法；解码 S 表达式：词法分析器，函数实现，封装解析器；访问结构体字段标签：http服务端解析请求参数并完成结构体字段填充；显示类型的方法；慎用反射的三个原因</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/fan-she.html" class="tag">反射</a></li>
                    </ul>
                </div>
                <a href="/gopl-reflection-2.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-13 17:00:00+08:00">
                            <script>document.write(moment('2020-08-13 17:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-reflection-1.html">
                        <h2>反射1</h2>
                    </a>
                </header>
                <div class="summary"><p>为什么使用反射；reflect.Type和reflect.Value：Kind方法；递归的值显示器：分析各类型分支，使用示例，循环引用；编码 S表达式：编码方式，编码器实现</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/fan-she.html" class="tag">反射</a></li>
                    </ul>
                </div>
                <a href="/gopl-reflection-1.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-12 14:20:00+08:00">
                            <script>document.write(moment('2020-08-12 14:20:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-expression-evaluator.html">
                        <h2>表达式求值器</h2>
                    </a>
                </header>
                <div class="summary"><p>定义接口和类型；定义方法；Parse函数：text/scanner包，运算符优先级处理示例；测试函数；check方法；应用到Web服务</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-expression-evaluator.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-11 16:30:00+08:00">
                            <script>document.write(moment('2020-08-11 16:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-automated-testing.html">
                        <h2>测试</h2>
                    </a>
                </header>
                <div class="summary"><p>功能测试：编写运行测试，基于表的测试，错误消息内容；随机测试；测试命令源码文件；白盒测试：正确使用伪实现；外部测试包：go list工具，白盒测试技巧；好的测试举例；覆盖率；基准测试：查看内存分配，性能比较；性能剖析：获取分析报告；示例函数</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/gopl-automated-testing.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-10 15:00:00+08:00">
                            <script>document.write(moment('2020-08-10 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-packages-and-the-go-tool.html">
                        <h2>包和工具</h2>
                    </a>
                </header>
                <div class="summary"><p>空导入；包及成员的命名；go工具：工作空间GOPATH，包的下载(go get)，包的构建(go build, go run)，包的文档化(go doc, godoc)，内部包，包的查询(go list)</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-packages-and-the-go-tool.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-09 10:00:00+08:00">
                            <script>document.write(moment('2020-08-09 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-concurrent-non—blocking-cache.html">
                        <h2>并发非阻塞缓存</h2>
                    </a>
                </header>
                <div class="summary"><p>竞态检测器；并发非阻塞缓存：串行版本，使用互斥锁，重复抑制，另一种实现-使用监控goroutine；小结：CSP并发模型</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/sync.html" class="tag">sync</a></li>
                        <li><a href="/tag/ce-shi.html" class="tag">测试</a></li>
                    </ul>
                </div>
                <a href="/gopl-concurrent-non—blocking-cache.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-08 09:30:00+08:00">
                            <script>document.write(moment('2020-08-08 09:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-share-memory-by-communicating.html">
                        <h2>使用共享变量实现并发</h2>
                    </a>
                </header>
                <div class="summary"><p>竞态；互斥锁；读写互斥锁；内存同步；延迟初始化；goroutine与线程：可增长的栈，goroutine调度，GOMAXPROCS，goroutine没有标识</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/sync.html" class="tag">sync</a></li>
                        <li><a href="/tag/goroutine.html" class="tag">goroutine</a></li>
                    </ul>
                </div>
                <a href="/gopl-share-memory-by-communicating.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-07 16:30:00+08:00">
                            <script>document.write(moment('2020-08-07 16:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-pkg-net-http.html">
                        <h2>Go 函数特性和网络爬虫示例</h2>
                    </a>
                </header>
                <div class="summary"><p>爬取页面；递归：解析HTML，遍历HTML节点数；defer：获取页面的tittle，将页面保存到文件；匿名函数：解析链接，图的遍历；并发的Web爬虫示例：限制并发，程序退出，限制并发的另一个方案，深度限制；取消操作：取消广播，关闭HTTP请求；请求镜像资源</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/http.html" class="tag">http</a></li>
                        <li><a href="/tag/pa-chong.html" class="tag">爬虫</a></li>
                    </ul>
                </div>
                <a href="/gopl-pkg-net-http.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-06 15:30:00+08:00">
                            <script>document.write(moment('2020-08-06 15:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-pkg-net.html">
                        <h2>Go 网络编程示例</h2>
                    </a>
                </header>
                <div class="summary"><p>并发时钟服务器：并发回声服务器；接收完回声再结束；聊天服务器；聊天服务器功能扩展</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-pkg-net.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-05 17:10:00+08:00">
                            <script>document.write(moment('2020-08-05 17:10:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-rotoutine-chennle.html">
                        <h2>goroutine 和通道</h2>
                    </a>
                </header>
                <div class="summary"><p>并发编程风格；通道：无缓冲通道，管道，单向通道，缓冲通道，并发请求镜像资源，goroutine泄露；select多路复用：非阻塞模式，通道的零值；示例并发目录遍历：递归遍历目录，计算大小，汇报进度，提高并发效率，限制并发；取消（广播）：发送广播，响应取消</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-rotoutine-chennle.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-04 17:10:00+08:00">
                            <script>document.write(moment('2020-08-04 17:10:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-adapter-pattern.html">
                        <h2>适配器模式</h2>
                    </a>
                </header>
                <div class="summary"><p>适配器基于OOP方式的实现；Go语言中更轻量级的适配器实现：通过为函数定义方法</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-adapter-pattern.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-08-03 16:30:00+08:00">
                            <script>document.write(moment('2020-08-03 16:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-web-service.html">
                        <h2>Go Web 服务</h2>
                    </a>
                </header>
                <div class="summary"><p>Web服务：请求的URL路径，多个处理函数，请求头和表单信息；http.Handler 接口：示例，添加功能，返回错误页面404，Get请求参数，优化添加功能，简化注册处理，并发安全问题和示例；部署：反向代理，Panic处理</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/http.html" class="tag">http</a></li>
                    </ul>
                </div>
                <a href="/gopl-web-service.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-23 14:10:00+08:00">
                            <script>document.write(moment('2020-07-23 14:10:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-pkg-sort.html">
                        <h2>排序（sort包）</h2>
                    </a>
                </header>
                <div class="summary"><p>使用sort.Interface来排序：接口实现，字符串排序，反转Reverse；复杂类型的排序：对结构体排序，使用表格输出结构体（text/tabwriter包），优化及多字段排序，检查是否有序；稳定的排序方法</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/sort.html" class="tag">sort</a></li>
                    </ul>
                </div>
                <a href="/gopl-pkg-sort.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 17:00:00+08:00">
                            <script>document.write(moment('2020-07-22 17:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-resource-limitation.html">
                        <h2>Docker 资源限制</h2>
                    </a>
                </header>
                <div class="summary"><p>内存：OOME，内存限制；CPU：CPU Share，CPU核数，CPU指定核心；压力测试：查询宿主机上的资源，下载用于压测的镜像，测试内存限制，测试CPU限制，测试CPU Share</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/docker-resource-limitation.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 16:00:00+08:00">
                            <script>document.write(moment('2020-07-22 16:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-registry.html">
                        <h2>Docker 私有Registry</h2>
                    </a>
                </header>
                <div class="summary"><p>私有Registry：yum安装，容器安装，上传下载镜像；Harbor：Harbor特性，下载Harbor，硬件要求，软件依赖，Docker Compose，安装Harbor，登录Harbor，停止Harbor</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                        <li><a href="/tag/harbor.html" class="tag">harbor</a></li>
                    </ul>
                </div>
                <a href="/docker-registry.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 15:00:00+08:00">
                            <script>document.write(moment('2020-07-22 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-dockerfile.html">
                        <h2>Docker Dockerfile</h2>
                    </a>
                </header>
                <div class="summary"><p>Dockerfile说明：基本结构，工作目录，环境变量；指令：列举各种指令，环境变量，安装应用后清除缓存，健康检查；制作镜像：httpd镜像，使用环境变量，CMD命令的参数问题，动态生成配置文件</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                        <li><a href="/tag/dockerfile.html" class="tag">dockerfile</a></li>
                    </ul>
                </div>
                <a href="/docker-dockerfile.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 14:00:00+08:00">
                            <script>document.write(moment('2020-07-22 14:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-volumes.html">
                        <h2>Docker 存储卷</h2>
                    </a>
                </header>
                <div class="summary"><p>为何需要存储卷：数据存储的问题，Data volumes；在容器中使用volumes：Volumes types，Docker-managed volume，Bind-mount Volme，共享卷</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/docker-volumes.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 11:00:00+08:00">
                            <script>document.write(moment('2020-07-22 11:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-network.html">
                        <h2>Docker 网络</h2>
                    </a>
                </header>
                <div class="summary"><p>容器虚拟化网络基础：共享网络名称空间，四种容器网络类型；设定容器网络：network参数，主机名和域名，搜索域，端口映射，联盟式网络；开放式网络：防火墙问题；修改默认网络；创建自定义网络：默认bridge网络的设置；远程管理docker：客户端设置环境变量</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/docker-network.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 10:00:00+08:00">
                            <script>document.write(moment('2020-07-22 10:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-image.html">
                        <h2>Docker 镜像管理</h2>
                    </a>
                </header>
                <div class="summary"><p>运行容器示例：Nginx，redis；Docker镜像：镜像启动过程，分层构建，基础镜像选择，文件系统；Registry：Repository仓库，Index，云原生；基于容器制作镜像：修改标签，修改默认启动命令；镜像导入和导出</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/docker-image.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-22 09:00:00+08:00">
                            <script>document.write(moment('2020-07-22 09:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/docker.html"><span class="category-tag">Docker</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/docker-basic-knowledge.html">
                        <h2>Docker 基础知识</h2>
                    </a>
                </header>
                <div class="summary"><p>容器基础：Namespaces，cgroups；构架：daemon，client，registries；安装：Docker-CE，指定版本，镜像加速器，配置文件；命令：系统信息，搜索镜像；image镜像操作：拉取镜像，查看下载的镜像，删除本地镜像；container容器操作：run命令，busybox容器操作</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/docker.html" class="tag">docker</a></li>
                    </ul>
                </div>
                <a href="/docker-basic-knowledge.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-16 16:00:00+08:00">
                            <script>document.write(moment('2020-07-16 16:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-io-filerw.html">
                        <h2>读写操作</h2>
                    </a>
                </header>
                <div class="summary"><p>终端读写：从终端输入，以字符串输入，带缓冲区的读写；文件读写：读整个文件，读压缩文件，写入，拷贝，逐行读取，读取内容并丢弃；向 io.Writer 写入字符串；通过 fmt.Fprint 写入</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/bufio.html" class="tag">bufio</a></li>
                    </ul>
                </div>
                <a href="/gopl-io-filerw.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-15 15:30:00+08:00">
                            <script>document.write(moment('2020-07-15 15:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-error-handling.html">
                        <h2>错误处理（包括日志记录）</h2>
                    </a>
                </header>
                <div class="summary"><p>错误处理的5个场景：将错误传送下去，尝试重试（指数退避策略），输出日志并退出，记录log日志（继续运行），忽略错误；error接口：errors包，fmt.Errorf，自定义错误；异常和捕捉</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/errors.html" class="tag">errors</a></li>
                    </ul>
                </div>
                <a href="/gopl-error-handling.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-15 15:00:00+08:00">
                            <script>document.write(moment('2020-07-15 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-reverse-utf8.html">
                        <h2>反转 UTF-8 编码的字符串</h2>
                    </a>
                </header>
                <div class="summary"><p>反转UTF-8字符串：简单的实现，原地反转，高效的原地反转；测试验证：功能测试，随机测试，基准测试</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-reverse-utf8.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-14 17:00:00+08:00">
                            <script>document.write(moment('2020-07-14 17:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-methods-interfaces.html">
                        <h2>Go 方法和接口</h2>
                    </a>
                </header>
                <div class="summary"><p>方法声明；指针接受者的方法；方法变量，方法表达式；接口类型；接口值：比较接口值，含有空指针的非空接口；类型断言；类型分支；使用接口的一些建议</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-methods-interfaces.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-14 16:00:00+08:00">
                            <script>document.write(moment('2020-07-14 16:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-functions.html">
                        <h2>Go 函数</h2>
                    </a>
                </header>
                <div class="summary"><p>裸返回；图的遍历；捕获迭代变量；defer；panic；recover</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-functions.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-13 14:30:00+08:00">
                            <script>document.write(moment('2020-07-13 14:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-basic-knowledge.html">
                        <h2>Go程序基础</h2>
                    </a>
                </header>
                <div class="summary"><p>Go中的名称：关键字，内置预声明，命名规则；基础数据类型：整数操作符，布尔运算符，布尔转数值；字符串和字节切片：bytes包；复合数据类型：切片的反转、平移、比较，map使用切片、用作集合；位向量集合：计算置位个数，自适应32或64位平台</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                    </ul>
                </div>
                <a href="/gopl-basic-knowledge.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-12 13:00:00+08:00">
                            <script>document.write(moment('2020-07-12 13:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-moudle-collections.html">
                        <h2>Python collections 模块</h2>
                    </a>
                </header>
                <div class="summary"><p>namedtuple具名元组；defaultdict有默认值的字典类型，setdefault方法也可以设置默认值；Counter字典实现的计数器（多重集合）；其他映射类型。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/pythonmo-kuai.html" class="tag">python模块</a></li>
                    </ul>
                </div>
                <a href="/python-moudle-collections.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-11 11:50:00+08:00">
                            <script>document.write(moment('2020-07-11 11:50:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-pkg-fmt.html">
                        <h2>格式化输出（fmt包）</h2>
                    </a>
                </header>
                <div class="summary"><p>fmt包：各种转义字符，占位符说明；使用示例：重复使用操作数，输出字节序列，指定宽度，宽度和精度，打印结构体，字符串对齐，动态控制宽度（缩进）</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/fmt.html" class="tag">fmt</a></li>
                    </ul>
                </div>
                <a href="/gopl-pkg-fmt.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-10 15:30:00+08:00">
                            <script>document.write(moment('2020-07-10 15:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/yun-wei-zi-dong-hua.html"><span class="category-tag">运维自动化</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/zabbix-plugin-graphtrees.html">
                        <h2>Zabbix Graphtrees 插件</h2>
                    </a>
                </header>
                <div class="summary"><p>Zabbix的graphtree插件的安装和使用效果；解决生成环境大量图片请求有图片加载失败的问题；解决zabbix4.4版本上插件兼容性的问题；用户未登录可以隐藏菜单</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/zabbix.html" class="tag">zabbix</a></li>
                        <li><a href="/tag/graphtrees.html" class="tag">graphtrees</a></li>
                    </ul>
                </div>
                <a href="/zabbix-plugin-graphtrees.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-09 20:00:00+08:00">
                            <script>document.write(moment('2020-07-09 20:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-pkg-flag.html">
                        <h2>命令行参数（flag包）</h2>
                    </a>
                </header>
                <div class="summary"><p>命令行参数：os.Args，flag基本使用，切片加参数，解析时间；自定义类型：接口说明，解析温度，打印默认值，解析自定义切片，简易的自定义版本；自定义命令参数容器：定制Usage，定制CommandLine，创建私有命令参数容器</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/flag.html" class="tag">flag</a></li>
                        <li><a href="/tag/ming-ling-xing-can-shu.html" class="tag">命令行参数</a></li>
                    </ul>
                </div>
                <a href="/gopl-pkg-flag.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-08 13:00:00+08:00">
                            <script>document.write(moment('2020-07-08 13:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-gif-svg-png.html">
                        <h2>GIF、SVG、PNG、图片格式转换</h2>
                    </a>
                </header>
                <div class="summary"><p>GIF动画：利萨如图形；浮点数生成SVG；复数分形图：复数说明，Mandelbrot集分形图，生成PNG图片，base64编码后生成img标签，全彩图，牛顿法求解的分形图；图片格式转换。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/http.html" class="tag">http</a></li>
                    </ul>
                </div>
                <a href="/gopl-gif-svg-png.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-07 15:00:00+08:00">
                            <script>document.write(moment('2020-07-07 15:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/go.html"><span class="category-tag">Go</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/gopl-json-template-html.html">
                        <h2>JSON、文本模板、HTML模板</h2>
                    </a>
                </header>
                <div class="summary"><p>JSON：序列化，成员标签，反序列化；HTTP获取JSON：获取GitHub的issue信息，流式解码；文本模板：模板表达式，模板输出的过程，帮助函数Must；HTML模板：输出网页，template.HTML类型避免转义。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/gopl.html" class="tag">gopl</a></li>
                        <li><a href="/tag/json.html" class="tag">json</a></li>
                        <li><a href="/tag/http.html" class="tag">http</a></li>
                        <li><a href="/tag/github.html" class="tag">github</a></li>
                    </ul>
                </div>
                <a href="/gopl-json-template-html.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-05 20:20:00+08:00">
                            <script>document.write(moment('2020-07-05 20:20:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/yun-wei-zi-dong-hua.html"><span class="category-tag">运维自动化</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/awk-and-zabbix-user-parameter-item.html">
                        <h2>awk命令和Zabbix自定义监控项</h2>
                    </a>
                </header>
                <div class="summary"><p>awk命令基本用法，awk自定义变量，awk进阶内容。zabbix自定义参数监控</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/awk.html" class="tag">awk</a></li>
                        <li><a href="/tag/zabbix.html" class="tag">zabbix</a></li>
                    </ul>
                </div>
                <a href="/awk-and-zabbix-user-parameter-item.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-04 22:30:00+08:00">
                            <script>document.write(moment('2020-07-04 22:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-decorator-2.html">
                        <h2>Python装饰器进阶</h2>
                    </a>
                </header>
                <div class="summary"><p>装饰器进阶：元信息，基于类的装饰器；用装饰器来包装argparse模块;atargparse代码和示例</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/zhuang-shi-qi.html" class="tag">装饰器</a></li>
                        <li><a href="/tag/ming-ling-xing-can-shu.html" class="tag">命令行参数</a></li>
                        <li><a href="/tag/pythonmo-kuai.html" class="tag">python模块</a></li>
                    </ul>
                </div>
                <a href="/python-decorator-2.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-03 09:30:00+08:00">
                            <script>document.write(moment('2020-07-03 09:30:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/xue-xi-bi-ji.html"><span class="category-tag">学习笔记</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/git-how-to-advanced.html">
                        <h2>git骚操作</h2>
                    </a>
                </header>
                <div class="summary"><p>git各种错误提交后的应对和处理</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/git.html" class="tag">git</a></li>
                    </ul>
                </div>
                <a href="/git-how-to-advanced.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-07-02 14:00:00+08:00">
                            <script>document.write(moment('2020-07-02 14:00:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/python-decorator.html">
                        <h2>Python装饰器</h2>
                    </a>
                </header>
                <div class="summary"><p>装饰器的设计原则和设计思路，逐步实现一个装饰器，讲明原理；装饰器的模板；装饰器的嵌套和执行顺序</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/zhuang-shi-qi.html" class="tag">装饰器</a></li>
                    </ul>
                </div>
                <a href="/python-decorator.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2020-06-29 19:41:00+08:00">
                            <script>document.write(moment('2020-06-29 19:41:00+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/python.html"><span class="category-tag">Python</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/use-pelican-make-website.html">
                        <h2>基于Python的Pelican打造静态网站</h2>
                    </a>
                </header>
                <div class="summary"><p>Pelican使用指南：安装，使用markdown写文章，生成静态页面，通过gitee发布，关于主题，添加插件；经验技巧：Markdown中使用锚点，代码高亮显示</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/pelican.html" class="tag">pelican</a></li>
                        <li><a href="/tag/markdown.html" class="tag">markdown</a></li>
                    </ul>
                </div>
                <a href="/use-pelican-make-website.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2019-09-09 09:43:51+08:00">
                            <script>document.write(moment('2019-09-09 09:43:51+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/yun-wei-zi-dong-hua.html"><span class="category-tag">运维自动化</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/ansible-roles-and-best-practices.html">
                        <h2>Ansible Roles和最佳实践</h2>
                    </a>
                </header>
                <div class="summary"><p>Roles目录结构；多平台支持：tasks级别，role级别，playbook级别；Using Roles；角色依赖关系；角色中嵌入模块和插件；项目目录结构</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ansible.html" class="tag">ansible</a></li>
                    </ul>
                </div>
                <a href="/ansible-roles-and-best-practices.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2019-08-25 09:43:51+08:00">
                            <script>document.write(moment('2019-08-25 09:43:51+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/yun-wei-zi-dong-hua.html"><span class="category-tag">运维自动化</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/ansible-vault.html">
                        <h2>Ansible 加密模块</h2>
                    </a>
                </header>
                <div class="summary"><p>加密文件：加密配置文件并使用，使用文件加密；加密变量：通过文件加密，通过密码加密，加上用户标识；使用debug模块进行调试</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ansible.html" class="tag">ansible</a></li>
                    </ul>
                </div>
                <a href="/ansible-vault.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2019-08-23 09:43:51+08:00">
                            <script>document.write(moment('2019-08-23 09:43:51+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/yun-wei-zi-dong-hua.html"><span class="category-tag">运维自动化</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/ansible-config-and-inventory.html">
                        <h2>Ansible 配置文件</h2>
                    </a>
                </header>
                <div class="summary"><p>配置文件：配置文件位置和优先级，配置文件模板，分类介绍配置；Inventory配置：定义主机和组，主机变量，组变量，默认组，组的嵌套，多重变量定义，用于SSH连接的参数，验证变量的值</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ansible.html" class="tag">ansible</a></li>
                    </ul>
                </div>
                <a href="/ansible-config-and-inventory.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
        <li>
            <article>
                <footer>
                        <p>
                        <time datetime="2018-10-12 09:43:51+08:00">
                            <script>document.write(moment('2018-10-12 09:43:51+08:00').format('LL'));</script>
                        </time>
                                in <a href="/category/yun-wei-zi-dong-hua.html"><span class="category-tag">运维自动化</span></a>
                    </p>
                </footer>
                <header>
                    <a href="/installing-ansible.html">
                        <h2>Ansible 安装部署</h2>
                    </a>
                </header>
                <div class="summary"><p>Ansible的2种安装的方法：pip安装，yum安装；在Azure中使用Ansible。</p> </div>
                <div class="tags">
                    <ul class="tags">
                        <li><a href="/tag/ansible.html" class="tag">ansible</a></li>
                        <li><a href="/tag/azure.html" class="tag">azure</a></li>
                    </ul>
                </div>
                <a href="/installing-ansible.html">
                    <p class="readmore">Read more...</p>
                </a>
            </article>
        </li>
    </ol>
</div>
                <footer>
                    <div class="icons">
                    </div>
                    <span id="busuanzi_container_page_pv" style="padding: 10px">本文阅读量<span id="busuanzi_value_page_pv"></span>次</span>
                    <span id="busuanzi_container_site_pv" style="padding: 10px">本站总访问量<span id="busuanzi_value_site_pv"></span>次</span>
                    <span id="busuanzi_container_site_uv" style="padding: 10px">本站总访客数<span id="busuanzi_value_site_uv"></span>人</span>
                    <p>© <script>document.write(moment().format('YYYY'));</script> 749B</p>
                </footer>
        </div>
</body>
</html>